<!DOCTYPE html>
<html>
<head>
    <title></title>
    <script type="text/javascript">
        /**
         * jquery ready:line-310，line-687
         * 对于jquery的疑问有点多：
         * 1.document.body需要判断，因为在IE浏览器里，频繁reload页面的情况，浏览器会先检测document.body
         * 而不再进行我们的检测，故对ie需要检测这个见：jquery 的bug #5443
         * 2.为何需要判断topframe，个人理解：因为iframe里的页面如果是Ready，这样并不能代表主页面ready
         * 3.我的写法与Jquery的谁更山寨?
         */
        (function (document, window) {
            var isReady = false,
                    handlerList = [];

            function fireHandlers() {
                var fn;
                while (fn = handlerList.shift()) {
                    fn();
                }
            }

            var ln = {
                ready:function (callback) {
                    var top = false;
                    try {
                        top = window.frameElement == null && document.documentElement;
                    } catch (e) {
                    }
                    if (top && top.doScroll) {
                        (function doScrollCheck() {
                            if (!isReady) {
                                /**
                                 * 没有ready的状态，在ie下利用doScroll方式进行ready判断
                                 *
                                 */
                                try {
                                    // throws errors until after ondocumentready
                                    top.doScroll('left');
                                    //saveHandlers;
                                    handlerList.push(callback);
                                } catch (e) {
                                    return setTimeout(doScrollCheck, 50);
                                }
                                // no errors, fire
                                isReady = true;
                                fireHandlers();
                            } else {
                                /**
                                 * 这个是在ready过程结束后，添加handler的情况
                                 * 这种情况就不需要经过上面的判断了，直接执行handler即可
                                 */
                                callback();
                            }
                        })();
                    }

                }
            };
            window.ln = ln;
        }(document, window));
        ln.ready(function () {
            console.log('doScroll Ready---1!!!');
        });
        ln.ready(function () {
            console.log('doScroll Ready---2!!!');
        });
        window.onload = function () {
            console.log('window onload!')
        };
    </script>


</head>
<body>

<img src="http://www.baidu.com/img/baidu_sylogo1.gif" width="270" height="129">
<img src="http://www.planeart.cn/demo/imgZoom/_demo/b2.jpg" alt="">
<iframe src="http://www.baidu.com"></iframe>


</body>
</html>
